﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using br.com.portocs.unidaacademico.dominio;

public partial class academico_ProfessoresCadastro : br.com.portocs.unidaacademico.ui.views.PageView
{
    private Professor obj;

    private string AreaId = "cadProfessores";
    private string pagAnterior = "Professores.aspx";

    private string subTituloPaginaAlterar = "Alteração de Cadastro";
    private string subTituloPaginaCriar = "Cadastrando novo item...";

    private bool voltarAcaoCriar = false; // após ação do usuario, voltar para pag anterior se acao = criar
    private bool voltarAcaoAlterar = false; // após ação do usuario, voltar para pag anterior se acao = Alterar

    //função executada no page load
    private void OutrasFuncoesCarregamento()
    {
        if (recuperarAcaoNaViewState() == "alterar")
        {

        }

        //popular os ddls
        if (!Page.IsPostBack)
        {

        }

        this.alert.Visible = litAviso.Text.Length > 0;

    }




    //definir propriedades no formulario ( carregamento da pag ) obj => form
    private void CarregarFormulario()
    {

        tbNome.Text = getObjSessao().Nome;
        tbCpf.Text = getObjSessao().CPF;
        tbRg.Text = getObjSessao().RG;
        tbRgOrgao.Text = getObjSessao().OrgaoRG;
        tbCartTrabalho.Text = getObjSessao().CarteiraTrabalho;
        tbCTNumSerie.Text = getObjSessao().NumeroSerie;
        tbTelefone.Text = getObjSessao().Telefone;
        tbCelular.Text = getObjSessao().Celular;
        tbObservacoes.Text = getObjSessao().Observacoes;

        tbDataAdmissao.Text = br.com.portocs.unidaacademico.ui.views.Utilitarios.retornaDataPadraoBr(getObjSessao().Data_admissao);
    }

    //form => obj
    private void setarObjComInformacoesDoFormulario()
    {

        if (recuperarAcaoNaViewState() == "criar")
        {
            //alterar somente o nome da Classe----------------
            this.obj = new Professor();
            setarObjSessao(obj);
            //---------------------------

            getObjSessao().DataCadastro = DateTime.Now;

        }


        getObjSessao().Nome = tbNome.Text;
        getObjSessao().CPF = tbCpf.Text;
        getObjSessao().RG = tbRg.Text;
        getObjSessao().CarteiraTrabalho = tbCartTrabalho.Text;
        getObjSessao().Telefone = tbTelefone.Text;
        getObjSessao().Observacoes = tbObservacoes.Text;
        getObjSessao().OrgaoRG = tbRgOrgao.Text;
        getObjSessao().NumeroSerie = tbCTNumSerie.Text;
        getObjSessao().Celular = tbCelular.Text;
        getObjSessao().DataNascimento = DateTime.Now;
      
        getObjSessao().Data_admissao = br.com.portocs.unidaacademico.ui.views.Utilitarios.retornaDataPadraoEUA(tbDataAdmissao.Text);

        /*
            Exemplo de cadastro de endereco
            
         * getObjSessao().AdicionaEndereco(tbLogradouro.Text, tbBairro.Text, tbCidade.Text, ddlUF.SelectedValue);
         
         */
    }

    //validações. se for para prosseguir com a ação do usuário, retornar true
    private bool formularioValidado()
    {
        bool retorno = true;

        if (tbNome.Text.Length == 0)
        {
            retorno = false;
            litAviso.Text = "- Por favor, insira um nome.<br />";
        }

        if (tbDataAdmissao.Text.Length == 0)
        {
            retorno = false;
            litAviso.Text = "- Por favor, informe a data de admissão.<br />";
        }


        if (!retorno) litAviso.Text += "*** Nada foi feito.";
        if (retorno) litAviso.Text = "";

        return retorno;
    }




    private void FuncoesPosAcaoProfessoreAcaoAlterar()
    {
        litAviso.Text = "Item alterado com sucesso.";
    }

    private void FuncoesPosAcaoProfessoreAcaoCriar()
    {
        litAviso.Text = "Item cadastrado com sucesso.";
    }



    #region Não editável

    private long ItemId = 0;


    //retorna objeto
    protected Professor getObjSessao()
    {
        if (obj == null)
        {
            if (ViewState["ItemObj"] != null)
                obj = (Professor)ViewState["ItemObj"];
            else
                CarregarObjeto();
        }
        return this.obj;
    }

    protected void setarObjSessao(Professor objS)
    {
        //ViewState["ItemObj"] = objS;
        obj = objS;
    }

    //setar acao na ViewState
    protected void setarAcaoNaViewState(string acao)
    {
        ViewState["acao"] = acao;

    }
    //recuperar acao na ViewState
    protected string recuperarAcaoNaViewState()
    {
        return ViewState["acao"].ToString();
    }

    //carrega Objeto
    protected void CarregarObjeto()
    {
        if (ItemId > 0)
            this.obj = new br.com.portocs.unidaacademico.repositorio.RepositorioBase<Professor>().RecuperarPorId(ItemId);
        else
            this.obj = new Professor();

        setarObjSessao(this.obj);
    }

    //seta a propriedade do Id
    protected void setaIdQueryString()
    {
        if (Request.QueryString["ItemId"].ToString() != null)
            this.ItemId = long.Parse(Request.QueryString["ItemId"].ToString());
        else
            this.ItemId = 0;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        carregaArea(AreaId);

        //vendo o tipo inicial de comportamento em relação a estar criando ou alterando um obj
        if (!Page.IsPostBack)
        {
            if (Request.QueryString["acao"].ToString() != null)
                setarAcaoNaViewState(Request.QueryString["acao"].ToString());
        }


        if (recuperarAcaoNaViewState() == "alterar")
        {

            setaIdQueryString();

            if (!Page.IsPostBack)
            {

                CarregarObjeto();
                CarregarFormulario();
            }

            litSubtituloAcao.Text = subTituloPaginaAlterar;
        }
        else
        {
            litSubtituloAcao.Text = subTituloPaginaCriar;
        }

        OutrasFuncoesCarregamento();

    }


    //função executava ao clicar em "salvar alterações"
    protected void btCriarSalvar_Click(object sender, EventArgs e)
    {
        if (formularioValidado())
        {
            setarObjComInformacoesDoFormulario();
            Professor dest = new br.com.portocs.unidaacademico.repositorio.RepositorioBase<Professor>().SalvarOuAtualizar(getObjSessao());
            setarObjSessao(dest);
            string acao = recuperarAcaoNaViewState();

            if (acao == "criar")
            {
                FuncoesPosAcaoProfessoreAcaoCriar();
                limparObjs();
            }

            else if (acao == "alterar")
            {
                FuncoesPosAcaoProfessoreAcaoAlterar();

                if (voltarAcaoAlterar)
                    Response.Redirect(pagAnterior);
            }
        }
    }

    private void limparObjs()
    {
        this.obj = null;
        setarObjSessao(null);

    }


    #endregion



}
